__all__ = ['init_node', 'get_xxx', 'print_node']


def init_node(attr_name_list, attr_list):
    """
    利用属性名列表和属性值列表，初始化节点对象。
    :param attr_list: 属性列表
    :param attr_name_list: 属性名列表
    :return: dict, key为节点的属性，值为对应的属性值
    """
    n = len(attr_list)
    node = {attr_name_list[i]: attr_list[i] for i in range(n)}

    return node


def _get_attr_(node, key):
    """
    获取节点的属性。
    :param node: 节点对象
    :param key: 属性名
    :return: 如果属性名长度为零，返回整个节点(dict)；否则返回节点中对应属性的值。
    """
    if len(key) != 0:
        return node[key]
    else:
        return node


def get_xxx(node):
    """
    获取对应的节点属性。
    :param node: 节点对象
    :return: 返回模块内部函数的返回值。
    """
    return _get_attr_(node, '')


def print_node(node):
    """
    显示节点全部信息（利用format函数）
    :param node: 节点对象
    :return:
    """
    # 获取节点所有属性
    info = get_xxx(node)
    for key in info:
        print("{}:\n\t{}".format(key, info[key].replace(';', ';\n\t')))
